#pragma once

#include "util/c99defs.hpp"
#include "util/json.h"

#ifdef __cplusplus
extern "C" {
#endif
	
	struct cat_data {
		volatile long ref;
		Json::Value json;
	};

	typedef cat_data cat_data_t;

	EXPORT cat_data_t* cat_data_create();
	EXPORT cat_data_t* cat_data_create_from_json(const char* json_string);
	EXPORT cat_data_t* cat_data_create_from_json_file(const char* json_file);
	EXPORT bool cat_data_write_json_file(cat_data_t* data,const char* json_file);

	EXPORT bool cat_data_update(cat_data_t &dst,cat_data_t &src);
	EXPORT void cat_data_release(cat_data_t* data);

	EXPORT int cat_data_get_mode(cat_data_t* data);


#ifdef __cplusplus
}
#endif